
package Comunicaciones;

//importaciones de los objectos referenciables y sus Helpers
import PaqueteCORBA.*;
import org.omg.CosNaming.NameComponent;

/**
 * 
 * 
 */
public class CorbaConexionServidor extends Comunicaciones.CorbaConexion {

 /**
 * <p>Does ...</p>
 * 
 * 
 * @param _puerto 
 * @param _host 
 */
    public  CorbaConexionServidor(int _puerto, String _host) {        /** lock-end */
        super(_puerto,_host);
    }

/**
 * <p>Does ...</p>
 * 
 * 
 * @param servidor 
 * @param nombre 
 */
    public void registrarAulaVirtual(Servidor.AulaVirtual aulavirtual, String nombre) {
        try {
            // registrar el sirviente en el ORB
            // y obtener una referencia CORBA
            org.omg.CORBA.Object ref = rootpoa.servant_to_reference(aulavirtual);
            AulaVirtualCORBA href = AulaVirtualCORBAHelper.narrow(ref);

            // registrar el sirviente con el nombre de la mediateca
            NameComponent path[] = namingContextRef.to_name(nombre);
            namingContextRef.rebind(path, href);

            System.out.println("AulaVirtual listo ...");

            // espera las invocaciones de los clientes
            orb.run();
        } catch (Exception e) {
            System.err.println("ERROR: " + e);
            e.printStackTrace(System.out);
        }
    } 

/**
 * <p>Does ...</p>
 * 
 * 
 * @param gestor 
 * @param nombre 
 */
    public void registrarSesion(Servidor.Sesion sesion, String nombre) {
        try {
            // registrar el sirviente en el ORB
            // y obtener una referencia CORBA
            org.omg.CORBA.Object ref = rootpoa.servant_to_reference(sesion);
            SesionCORBA href = SesionCORBAHelper.narrow(ref);

            // registrar el sirviente con el nombre de la sesion
            NameComponent path[] = namingContextRef.to_name(nombre);
            namingContextRef.rebind(path, href);
        } catch (Exception e) {
            System.err.println("ERROR: " + e);
            e.printStackTrace(System.out);
        }
    }

    public ClienteCORBA resolverCliente(String nombre) {
        ClienteCORBA cli = null;
        try {
            // resuelve la Referencia a Objeto y obtiene una referencia al cliente
            cli = ClienteCORBAHelper.narrow(namingContextRef.resolve_str(nombre));
        } catch (Exception e) {
            System.err.println("ERROR: " + e);
            e.printStackTrace(System.out);
        }
        return (cli);
    }
 }